Traditional database management systems were designed with data being disk resident (e.g., store data on secondary storage); accordingly, in these systems, data is paged in and out of memory as needed. More recently there has been a shift in design of database management systems, such as online transaction processing (OLTP) databases, attributable at least in part to decreases in memory costs. Accordingly, several database management systems (e.g., main memory database systems) have emerged that primarily rely on memory for data storage (e.g., most or all of the data may be stored in memory as opposed to secondary storage).
In a transactional workload, record access patterns tend to be skewed. For instance, some records are “hot” and accessed frequently (e.g., these records can be considered to be included in a working set), while others records are “cold” and accessed infrequently, if ever. Performance of database engines can depend on the hot records residing in memory. Further, cold records can be moved to secondary storage with less impact on overall system performance.